<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 1.0 new Promise 的基本结构，必须传入函数
        // new Promise(() => { });

        // 2.0 Promise 对象的方法
        //      then()      成功时候执行的回调函数
        //      catch()     失败时候执行的回调函数
        //      finally()   不管成功失败都执行的回调函数
        // const p1 = new Promise(() => { });
        // console.log(p1);

        // 3.0 axios() 后可以调用 then() ?
        // 其实是函数内部返回了 Promise 对象
        // const axios = () => {
        //     // 通过 return 返回创建的 Promise 对象
        //     return new Promise(() => {
        //         console.log('Promise内部代码1');
        //         console.log('Promise内部代码2');
        //         console.log('Promise内部代码3');
        //     });
        // };

        // const res = axios();
        // console.log(res);

        // 小结：
        // 1. Promise 传入的函数会自动执行。
        // 2. resolve 代表成功时候的回调函数，通过 then() 进行传递。
        // 3. reject  代表失败时候的回调函数，通过 catch() 进行传递。
        // 4. 成功或者失败只会执行其一。
        debugger;
        const p2 = new Promise((resolve, reject) => {
            console.log('Promise内部代码1');
            console.log('Promise内部代码2');
            // 后面是伪代码
            if (false) {
                resolve('resolve的实参');
            } else {
                reject('reject的实参');
            }
        });

        p2
            .then(res => {
                console.log(1111, 'then 你通过 resolve 调用', res);
            })
            .catch(err => {
                console.log(2222, 'catch 你通过 reject 调用', err);
            })



    </script>
</body>

</html>